/**
 * @param {number[]} nums
 * @return {number}
 */
var firstMissingPositive = function(nums) {
    // let max = -1;
    // let min = 2**31 - 1;
    // let s = 0;
    let map = {};
    nums.forEach(n => {
        if (n > 0) {
            if (n in map) {
                return;
            }
            map[n] = 1;
            // s ^= n;
            // max = max > n ? max : n;
            // min = min < n ? min : n;
        }
    });
    let max = 2 ** 31 - 1;
    for (let i = 1;i < max;i++) {
        if (!(i in map)) {
            return i;
        }
    }
    // if (max === -1) {
    //     return 1;
    // } else if (min !== 1) {
    //     return 1;
    // } else {
    //     for (let i = 1;i <= max;i++) {
    //         s ^= i;
    //     }
    //     if (s === 0) {
    //         return max + 1;
    //     } else {
    //         return s;
    //     }
    // }
};

module.exports = {
    firstMissingPositive
}
